Namespace Notifications

    Public Class Notification

        Protected Sub New()

        End Sub

        Private _id As Guid
        Public Overridable Property Id() As Guid
            Get
                Return _id
            End Get
            Set(ByVal value As Guid)
                _id = value
            End Set
        End Property

        Private _userId As Guid
        Public Overridable Property UserId() As Guid
            Get
                Return _userId
            End Get
            Set(ByVal value As Guid)
                _userId = value
            End Set
        End Property

        Private _title As String = String.Empty
        Public Overridable Property Title() As String
            Get
                Return _title
            End Get
            Set(ByVal value As String)
                _title = value
            End Set
        End Property

        Private _message As String = String.Empty
        Public Overridable Property Message() As String
            Get
                Return _message
            End Get
            Set(ByVal value As String)
                _message = value
            End Set
        End Property

        Private _notificationDate As DateTime
        Public Overridable Property NotificationDate() As DateTime
            Get
                Return _notificationDate
            End Get
            Set(ByVal value As DateTime)
                _notificationDate = value
            End Set
        End Property

        Private _isRead As Boolean
        Public Overridable Property IsRead() As Boolean
            Get
                Return _isRead
            End Get
            Set(ByVal value As Boolean)
                _isRead = value
            End Set
        End Property

        Public Shared Function CreateNotification(ByVal id As Guid, _
                                                  ByVal userId As Guid, _
                                                  ByVal title As String, _
                                                  ByVal message As String, _
                                                  ByVal notificationDate As DateTime) As Notification

            Dim notification As New Notification()

            notification.Id = id
            notification.UserId = userId
            notification.Title = title
            notification.Message = message
            notification.NotificationDate = notificationDate

            Return notification

        End Function

    End Class

End Namespace
